home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok52 / abitur / txt / linereader.mod < prev    next >
Text File  |  1993-11-04  |  902b  |  43 lines

  1. IMPLEMENTATION MODULE LineReader;
  2.  
  3. FROM Dos IMPORT FileHandlePtr, Read;
  4. FROM Str IMPORT Length;
  5. FROM SYSTEM IMPORT ADR;
  6.  
  7. CONST EOL = CHR(10); (* = 12C octal *)
  8.       EOF     = 34C;
  9.  
  10.  
  11. PROCEDURE ReadALine(F: FileHandlePtr; VAR S: ARRAY OF CHAR;
  12.                     VAR EOFile: BOOLEAN);
  13. VAR StrPos: INTEGER;
  14.     StrLen: INTEGER;
  15.     Act: LONGINT;
  16. BEGIN (* ReadALine *)
  17.    StrLen := HIGH(S) - 1;
  18.    EOFile := FALSE;
  19.    REPEAT
  20.       StrPos := 0;
  21.       REPEAT
  22.          Act := Read(F, ADR(S[StrPos]), 1);
  23.          IF Act = 0 THEN
  24.             EOFile := TRUE
  25.          END;
  26.          INC(StrPos)
  27.       UNTIL (StrPos >= StrLen) OR EOFile OR (S[StrPos-1] = EOL);
  28.       IF StrPos < StrLen THEN
  29.          S[StrPos-1] := 0C
  30.       ELSE
  31.          S[StrPos] := 0C
  32.       END
  33.    UNTIL EOFile OR (Length(S) > 0);
  34.    IF Length(S) > 0 THEN
  35.       EOFile := FALSE
  36.    END;
  37. END ReadALine;
  38.  
  39.  
  40. BEGIN (* LineReader *)
  41. END LineReader.
  42.  
  43.